perm filename DNF.VRP[TIM,LSP] blob
sn#617896 filedate 1981-10-12 generic text, type T, neo UTF8
(DEFINEQ (CARTB (A B)
(COND (B (CONS (APPEND A (CAR B)) (CARTB A (CDR B))))))
(CARTA (A B)
(COND (A (APPEND (CARTB (CAR A) B) (CARTA (CDR A) B)))))
(CARTESIAN (A)
(COND (A (CARTA (CAR A) (CARTESIAN (CDR A))))
(T '(()))))
(DNF (A)
(COND
((ATOM A) (LIST (LIST A)))
((EQUAL (CAR A) 'OR) (MAPCONC (CDR A) 'DNF))
((EQUAL (CAR A) 'AND) (CARTESIAN (MAPCAR (CDR A) 'DNF)))
((EQUAL (CAR A) 'NOT) (←CNF (CADR A)))
(T 'ERROR)))
(←CNF (A)
(COND
((ATOM A) (LIST (LIST (LIST 'NOT A))))
((EQUAL (CAR A) 'AND) (MAPCONC (CDR A) '←CNF))
((EQUAL (CAR A) 'OR) (CARTESIAN (MAPCAR (CDR A) '←CNF)))
((EQUAL (CAR A) 'NOT) (DNF (CADR A)))
(T 'ERROR)))
(RUN ()
(PROG (I FORMULA)
(SETQ I 0)
Q (SETQ FORMULA
'(AND (OR P (AND R (OR P Q)))
(OR R (AND (OR S P) (OR R Q)))))
(SETQ FORMULA (LIST 'OR FORMULA FORMULA))
(DNF FORMULA)
(COND ((LESSP (SETQ I (ADD1 I)) 999)
(GO Q))))
(PRINT (DNF FORMULA))))
STOP